from math import *
from numpy import *
import pandas as pd

# Valores
n = 154
R = 0.2
mu = 1.257*10**-6

s_V = 1
s_I = 0.01
s_r = 0.001

# Datos
df = pd.read_csv("datos carga-masa electron.csv")
r = df["radio"]
V = df["voltaje"]
I = df["intensidad"]

# Fórmulas
def carga_masa(r, V, I, R, n):
    return (2*V * (R**2))/((r**2) *((4/5)**3) *(mu**2) * (n**2) * (I**2))

def s_carga_masa(r, V, I, R, n, s_V, s_I, s_r):
    return sqrt(s_V**2 *((2*R**2)/(r**2 * (4/5)**3 *mu**2 *n**2 *I**2))**2 + s_I**2 * ((2*V*R**2)/(r**2 * (4/5)**3 * mu**2 * n**2 * I**3))**2 +s_r**2 * ((4*V * R**2)/(r**3 *(4/5)**3 * mu**2 *n**2 *I**2))**2)

# Resultados
carga_masa_lista = []
s_carga_masa_lista = []

for i in range(len(r)):
    carga_masa_lista.append(carga_masa(r[i], V[i], I[i], R, n))
    s_carga_masa_lista.append(s_carga_masa(r[i], V[i], I[i], R, n, s_V, s_I, s_r))
    print(f"r = {r[i]} m\tV = {V[i]} V\tI = {I[i]} A:\t\te/m = {carga_masa(r[i], V[i], I[i], R, n):.2e} +- {s_carga_masa(r[i], V[i], I[i], R, n, s_V, s_I, s_r):.2e} As/kg")

print(f"\nMedia:\ne/m = {mean(carga_masa_lista):.2e} +- {s_carga_masa(r[i], V[i], I[i], R, n, s_V, s_I, s_r):.2e} As/kg")